Метавселенная. Создание пространственного интернета - Мэтью Болл
Во-первых, графический процессор не отображает весь виртуальный мир или даже большую его часть в любой момент времени. Вместо этого он рендерит только то, что необходимо конкретному пользователю, когда он в этом нуждается. Когда игрок поворачивается в такой игре, как The Legend of Zelda: Breath of the Wild, графический процессор Nvidia для Nintendo Switch эффективно выгружает все, что было отрисовано ранее, чтобы поддержать новое поле зрения игрока. Этот процесс называется "вырезание фрустра просмотра". Другие методы включают в себя "окклюзию", когда объекты, находящиеся в поле зрения игрока, не загружаются/рендерятся, если их загораживает другой объект, и "уровень детализации" (LOD), когда информация, такая как тонкая текстура коры березы, рендерится только тогда, когда игрок должен ее видеть.
Решения по обводке, окклюзии и LOD необходимы для рендеринга в реальном времени, поскольку позволяют сконцентрировать вычислительную мощность устройства пользователя на том, что он может видеть. Но в результате другие пользователи не могут "подхватить" работу GPU одного игрока. Некоторые читатели могут подумать, что это ложь, вспомнив многие часы, проведенные за игрой в Mario Kart на Nintendo 64, которая позволяла игрокам "разделить" экран телевизора на четыре части, по одной для каждого гонщика. Даже сегодня Fortnite позволяет одной PlayStation или Xbox разделить экран пополам, чтобы два игрока могли играть одновременно. Но в этом случае соответствующий GPU поддерживает одновременный рендеринг для нескольких участников, а не пользователей. Различие здесь очень важно. Каждый игрок должен вступать в один и тот же матч и уровень и не может покинуть его раньше времени. Это связано с тем, что процессоры устройства могут загружать и обрабатывать только ограниченное количество информации, а система памяти с произвольным доступом будет временно хранить различные рендеры (например, дерева или здания), чтобы они могли постоянно использоваться каждым игроком, а не рендериться с нуля каждый раз . Кроме того, разрешение и/или частота кадров каждого игрока падает на величину, пропорциональную количеству пользователей. Это означает, что даже если для управления двухпользовательской Mario Kart используются два телевизора, а не один телевизор, разделенный на две части, каждый игрок получает в два раза меньше отрисованных пикселей в секунду.†
Технически возможно, что графический процессор может воспроизводить две совершенно разные игры. Конечно, топовый графический процессор Nvidia может поддерживать две разные эмуляции двухмерного сайдскроллинга Super Mario Bros. или одну версию Super Mario Bros. и другую такую же маломощную игру. Однако это не будет эффективно с точки зрения вычислений. Графический процессор Nvidia, который может запустить высококлассную игру A на максимальном уровне рендеринга, не сможет запустить две версии игры на половине спецификации или даже на трети. Он также не может распределять мощность между играми в зависимости от того, что им нужно и когда, как родитель, помогающий двум детям учиться или ложиться спать. Даже если игра A никогда не сможет использовать всю мощность данного графического процессора Nvidia, этот резерв не может быть распределен между другими играми.
GPU не генерируют общую "мощность" рендеринга, которую можно распределить между пользователями, как электростанция распределяет электричество между несколькими домами, или как сервер CPU может поддерживать данные ввода, местоположения и синхронизации для сотни игроков в battle royale. Вместо этого GPU обычно работают как "заблокированный экземпляр", поддерживающий рендеринг одного игрока. Многие компании работают над решением этой проблемы, но пока это невозможно, нет никакой эффективности в создании "мега GPU", подобно крупным промышленным генераторам, турбинам или другим объектам инфраструктуры. Если электрогенераторы обычно становятся более экономичными в расчете на единицу мощности по мере увеличения их мощности, то с графическими процессорами дело обстоит наоборот. GPU, который в два раза мощнее другого, в упрощенном понимании, стоит в два раза дороже.
Трудности с "разделением" или "совместным использованием" графических процессоров объясняют, почему серверные фермы облачных игр Microsoft Xbox, по сути, состоят из стоек и стоек разобранных Xbox, каждая из которых обслуживает одного игрока. Другими словами, электростанция Microsoft - это сеть генераторов, состоящих из одного дома, а не один, размером с район. Для поддержки облачных экземпляров Microsoft могла бы использовать специализированное оборудование GPU и CPU, а не GPU и CPU в своих Xbox, ориентированных на потребителей. Однако это потребует разработки каждой игры Xbox для поддержки дополнительного "типа" Xbox.
Серверы облачного рендеринга также сталкиваются с проблемами загрузки. Облачному игровому сервису может потребоваться 75 000 выделенных серверов для района Кливленда в 8 часов вечера в воскресенье, но только 20 000 в среднем, и 4000 в 4 часа утра в понедельник. Когда потребители владеют этими серверами в виде консолей или игровых компьютеров, не имеет значения, что они не используются или находятся в автономном режиме. Однако экономика дата-центров ориентирована на оптимизацию спроса. В результате аренда высококлассных графических процессоров с низким коэффициентом использования всегда будет стоить дорого.
Именно поэтому Amazon Web Services предоставляет клиентам льготные тарифы, если они заранее арендуют у Amazon серверы ("зарезервированные экземпляры"). Клиентам гарантирован доступ на следующий год, поскольку они уже заплатили за сервер, а Amazon получает разницу между стоимостью и ценой, взимаемой с клиента (самый дешевый зарезервированный экземпляр Linux GPU в AWS, эквивалентный PS4, стоит более 2000 долларов за один год). Если клиент хочет получить доступ к серверам, когда они ему нужны ("точечные экземпляры"), он может обнаружить, что их нет в наличии, или что есть только GPU низшего класса. Последний момент является ключевым: мы не решим проблему нехватки вычислительной техники, если единственный способ сделать удаленные серверы доступными - это использовать, а не заменять старые.
Есть еще один способ улучшить модель затрат: консолидировать серверы в меньшем количестве мест. Вместо того чтобы содержать центры потокового вещания облачных игр в Огайо, Вашингтоне, Иллинойсе и Нью-Йорке, компания может построить один или два. По мере увеличения количества и разнообразия клиентов спрос стабилизируется, что приводит к повышению среднего коэффициента использования. Конечно, это также означает увеличение расстояния между удаленными GPU и конечным пользователем, что приводит к увеличению задержек. И это не решает проблему расстояния между пользователями.
Перенос вычислительных ресурсов в облако влечет за собой множество новых расходов. Например, постоянно включенные устройства, работающие в центрах обработки данных, создают значительное количество тепла - гораздо большее, чем суммарное тепло серверов, стоящих на комоде в гостиной семьи. Обслуживание, защита и управление этим оборудованием требуют больших затрат. Переход от потоковой передачи ограниченных битов данных к контенту с высоким разрешением и высокой частотой кадров также означает значительное увеличение затрат на пропускную способность. Да, Netflix и другие компании